package com.study.kt._04project.game_tank.model

/**
 * 显示的视图，定义显示规范
 */
interface View {
    //宽高 kotlin中接口可以定义属性，让实现类实现
    val x: Int
    val y: Int
    //位置
    val width: Int
    val height: Int
    //显示
    fun draw()

    /**
     * 检测是否碰撞
     * @param 相碰撞的两位View的位置、大小参数
     *
     * view的碰撞除了传入参数外也可以传入View，所以需要对该方法做方法重载，此处可以使用添加扩展方法的方式
     */
    fun checkCollision(x1: Int, y1: Int, w1: Int, h1: Int, x2: Int, y2: Int, w2: Int, h2: Int): Boolean {
        return when {
            //如果移动物体在碰撞物上面，只要满足移动物体y坐标+移动物体高度小于碰撞物y坐标即可
            y1 + h1 <= y2 -> false
            //移动物体在碰撞物下方
            y2 + h2 <= y1 -> false
            //移动物体在碰撞物左边
            x1 + w1 <= x2 -> false
            //移动物体在碰撞物右边
            x2 + w2 <= x1 -> false
            else -> true
        }
    }
}